import { showDialog } from 'vant';
import { ToastFun } from "@/hook/toast";
// 通用的上传文件方法
const uploadFile = async (file, formData, uploadApi, statusArray, resultArray) => {
  // 确保 statusArray 和 resultArray 是有效的数组，且不是 undefined
  if (!Array.isArray(statusArray)) {
    console.error("传递的 statusArray 不是一个有效的数组:", statusArray);
    statusArray = []; // 如果不是数组就赋值为空数组
  }

  if (!Array.isArray(resultArray)) {
    console.error("传递的 resultArray 不是一个有效的数组:", resultArray);
    resultArray = []; // 如果不是数组就赋值为空数组
  }

  // 设置上传中的状态
  file.status = 'uploading';
  file.message = '上传中...';

  ToastFun("Loading", { duration: 500 }); // 显示加载提示

  try {
    let { data } = await uploadApi(formData);  // 使用传入的上传接口

    if (data.code === 500) {
      // 上传失败，处理失败状态
      showDialog({
        title: '提示',
        message: `${data.msg}`,
      }).then(() => {
        // on close
      });
      file.status = 'failed';
      file.message = '上传失败';

      // 失败时，移除文件
      const index = statusArray.indexOf(file);
      if (index !== -1) {
        statusArray.splice(index, 1); // 修改原数组
      }
      return;
    }

    if (data.code === 200) {
      // 上传成功，处理成功状态
      file.status = 'success';
      file.message = '上传成功';

      // 将上传成功的图片数据推送到 resultArray（比如 dto.value.imageList）
      resultArray.push(data.data);
      console.log(resultArray, "上传成功");

      // 如果需要更新状态数组（如 swiperImg），也可以在这里修改
      // statusArray.push(data.data); // 如果需要更新状态数组可以加这行
    }

  } catch (error) {
    // 处理上传过程中的错误
    console.error("Error uploading image:", error);
    ToastFun("", { msg: "Image upload failed" });

    // 失败时，移除文件
    const index = statusArray.indexOf(file);
    if (index !== -1) {
      statusArray.splice(index, 1); // 修改原数组
    }
  }
};

export { uploadFile };